1. Field of the Invention
This invention relates to character synchronization of a serial code and more particularly to determining the byte boundary of a serial code.
Primary purpose of transmission codes is to transform the frequency spectrum of a serial data stream so that clocking can be recovered readily and a.c. coupling is possible. The code must also provide special characters outside the data alphabet for a function such as character synchronization, frame delimiters and perhaps abort, reset, idle, diagnostics, etc. Codes are also used often in combination with signal waveform shaping to adapt the signal spectrum more closely to the specific channel requirements. In most cases a reduction in bandwidth by constraints on both the high and low frequency components is desirable to reduce distortion in the transmission media, especially electromagnetic cables, or in the band limited receiver, and reduce the effects on intrinsic noise.
For fiber optic links and wire links, interest centers for many reasons on the family of two-level codes. For wire lengths one prefers the code with no d.c. and little low frequency content in order to d.c. isolate the transmission line for the driver and receiver circuitry, usually by transformers, and to reduce signal distortion on the line. Although these factors do not apply to fiber optic cases, good low frequency characteristics of the code are helpful for a number of reasons.
The high gain fiber optic receivers need an a.c. coupling stage near the front end. The control of the drive level, receiver gain, and equalization is simplified and the precision of control is improved, if it can be based on the average signal power, especially at top rates. D.C. restore circuits tend to lose precision with rising data rates and cease to operate properly below the maximum rates for other circuits required in a transceiver. Finally, if the time constants associated with the parasitic capacitances at the front end of a receiver are comparable to or longer than a baud interval, a signal with reduced low frequency content will suffer less distortion and will enable many links to operate without an equalizing circuit.
The Manchester and related codes are simple two-level codes and solve the clocking and low frequency problems as well. They translate each bit into two bits for transmission and are a good choice whenever the high clocking rates cause no problems in logic or analog circuits, the transducers or on the transmission line. They also reduce the data transmission rate by a factor of two since they encode 2 bits for every data bit.
Simple 5 bit/6 bit codes translates 5 binary bits into 6 binary bits and raise the number of information bits transmitted per baud interval to 0.833. Unfortunately, the implementation of a 5 bit/6 bit code in a byte-oriented (8 bit) system causes burdens in complexity. It is for this reason that an 8-bit/10-bit (8/10) partitioned block transmission code invented by Franaczek et al. and described in U.S. Pat. No. 4,486,739 assigned to the same assignee as the present invention is highly desirable when dealing with an 8-bit system. This patent is incorporated herein by reference. In this system a binary d.c. balance code encoder circuit for effecting the same is described which translated the 8-bit byte of information into 10 binary bits for transmission over electromagnetic or optical transmission lines subject to timing and low frequency constraints. The significance of this code is that it combines the low circuit count for implementation with excellent performance near the limits and measured with respect to the criteria. The 8-bit/10-bit code is partitioned into a 5-bit/6-bit block plus a 3-bit/4-bit block code which when used in concert allow a byte of data plus a control bit called the "K" bit to be encoded into 10 bits. In applications where the resulting encoded data is put into a serial data stream, the data is put into the serial data stream with the least significant bit going first. The receiver of this serial data will have to figure out where each of the 10 bits of the code lie in the serial data stream. It turns out there are ten possible place -which are referred to as "character boundaries" where the group of 10 bits may lie. If this character boundary is incorrectly determined then the receiver of the serial data will build its ten bits to decode from the bits of two different 8/10 characters. Consequently, incorrect data will be received and many 8/10 errors will result since the incorrectly acquired 8/10 character will not follow the rules of the 8/10 code in a consistent fashion.
In codes such as biphase, Manchester or NRZI the bits are encoded bit by bit, not in groups. The concept of character boundary does not mean anything for biphase, Manchester, and other bit oriented codes.
In the 8/10 code, one must establish a character boundary before one can successfully decode 8/10 characters. Therefore, special attention must be paid to how the appropriate character boundary can be found in a reliable fashion.
The invention by Widmer and Franaczek found the 8/10 code boundary by looking for five contiguous 1's in the serial data stream. There are two valid 8/10 characters that have five contiguous 1's in them called K28.5 and K28.7. The circuit required to achieve character synchronization on five contiguous 1's proved to be troublesome from a timing perspective and it consumed considerable power and/or considerable circuitry depending on which of several implementations are pursued.
It is therefore highly desirable to find some new means for determining the byte boundaries in the bits being deserialized.